<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

<script>
  //网络请求:   aaa -> 自己处理(10行)
  //处理:    aaa111 -> 自己处理(10行)
  //处理: aaa111222 -> 自己处理
  // new Promise((resolve, reject) => {
  //   setTimeout(() => {
  //     resolve('aaa')
  //   }, 1000);
  // }).then(res => {
  //   // 1.自己处理10行代码
  //   console.log(res, '第一层的10行处理代码');
    
  //   // 2.对结果的第一次处理
  //   return new Promise((resolve, reject) => {
  //     // resolve(res + '111')
  //     reject('err')
  //   })
  // }).then(res => {
  //   console.log(res, '第二层的10行处理代码');
    
  //   return new Promise(resolve => {
  //     resolve(res + '222')
  //   })
  // }).then(res => {
  //   console.log(res, '第三层的10行处理代码');
  // }).catch(err => {
  //   console.log(err);
  // })

  // /** new Promise(resolve => resolve(结果))简写 **/
  new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('aaa')
    }, 1000);
  }).then(res => {
    // 1.自己处理10行代码
    console.log(res, '第一层的10行处理代码');
    
    // 2.对结果的第一次处理

    //出错可以使用两种处理：1.返回 Promise.reject() 2.使用throw手动抛出异常
    // return Promise.reject('error message')
    throw 'error message'
  }).then(res => {
    console.log(res, '第二层的10行处理代码');
    
    return Promise.resolve(res + '222')
  }).then(res => {
    console.log(res, '第三层的10行处理代码');
  }).catch(err => {
    console.log(err);
  })

  // /** 省略掉Promise.resolve,可以直接return表示resolve的内容**/
  // new Promise((resolve, reject) => {
  //   setTimeout(() => {
  //     resolve('aaa')
  //   }, 1000);
  // }).then(res => {
  //   // 1.自己处理10行代码
  //   console.log(res, '第一层的10行处理代码');
    
  //   // 2.对结果的第一次处理
  //   return res + '111'
  // }).then(res => {
  //   console.log(res, '第二层的10行处理代码');
    
  //   return res + '222'
  // }).then(res => {
  //   console.log(res, '第三层的10行处理代码');
  // })
</script>
</body>
</html>